var MAX_DUMP_DEPTH = 10;

function dump(obj){
	alert(dumpObj(obj));
};

function dumpObj(obj, name, indent, depth){
    if (depth > MAX_DUMP_DEPTH) {
        return indent + name + ": <Maximum Depth Reached>\n";
    }
    if (typeof obj == "object") {
        var child = null;
        var output = indent + name + "\n";
        indent += "\t";
        for (var item in obj) {
            try {
                child = obj[item];
            } 
            catch (e) {
                child = "<Unable to Evaluate>";
            }
            if (typeof child == "object") {
                output += dumpObj(child, item, indent, depth + 1);
            }
            else {
                output += indent + item + ": " + child + "\n";
            }
        }
        
        return output;
    }
    else {
        return obj;
    }
}
